Poetry
What is Poetry?
Poetry is a modern Python package and dependency management tool that streamlines creating, building, and sharing Python projects. It helps:
- Manage dependencies
- Handle virtual environments
- Build and publish Python packages
Unlike traditional tools like pip
and virtualenv
, Poetry integrates dependency resolution and project management in a single tool.
Why Use Poetry?
- Dependency Resolution: Automatically resolves dependencies to ensure package compatibility
- Simplified Configuration: Uses a
pyproject.toml
file for centralized configuration - Built-in Virtual Environment Management: Creates and manages virtual environments automatically
- Cross-Platform Support: Works seamlessly across different operating systems
Installing Poetry
1. Install Poetry
curl -sSL https://install.python-poetry.org | python3 -
Or on macOS with Homebrew:
brew install poetry
Verify installation:
poetry --version
Setting Up a New Project
1. Create a New Project
poetry new my_project
Creates this directory structure:
my_project/
├── my_project/
│ └── __init__.py
├── tests/
│ └── __init__.py
├── pyproject.toml
└── README.rst
2. Understand pyproject.toml
Includes:
- Project Metadata: name, version, description, authors, etc.
- Dependencies: required packages
- Dev Dependencies: development-only packages
Adding Dependencies
1. Add a Dependency
poetry add requests
2. Add Development Dependencies
poetry add --group dev pytest
Install all with dev dependencies:
poetry install --with dev
Managing Virtual Environments
Poetry creates a virtual environment for your project automatically.
1. Check the Environment
poetry env info
2. Activate the Environment
Linux/macOS:
source $(poetry env info --path)/bin/activate
Windows:
. $(poetry env info --path)\Scripts\activate
Or start a new shell:
poetry shell
Exit with:
exit
Running Scripts
To run a Python script within the Poetry environment:
poetry run python script.py
Building and Publishing a Package
1. Build the Package
poetry build
Creates files in the dist/
directory.
2. Publish to PyPI
poetry publish --username <your-username> --password <your-password>
Or using a token (recommended):
poetry publish --username __token__ --password <your-token>
Bonus Tips
1. Lock File
Poetry creates a poetry.lock
file to lock exact versions for reproducibility.
2. Upgrade Dependencies
Upgrade all:
poetry update
Upgrade one:
poetry update requests
Conclusion
Poetry 2.x is a powerful tool for modern Python development. It simplifies dependency resolution, environment setup, and package publishing—letting you focus on writing great code.